!!?
8+Y
#LG
!#S
"N#
"N#
002
#LG
.Y6
000
001
#O1
002
Help Index
!"L
Top Level Commands
!%+
001
#[E
001
Help on Help
!!S
001
0HZ
004
Help on Help
!!S
Configuration
!$\
Load File
"16
Top Level Commands
!%+
001
16N
000
001
0\W
000
001
1S-
003
Function Keys
!&=
Slash Commands
""=
Navigation Commands
!'%
001
1Y-
001
Top Level Commands
!%+
001
2%E
001
Top Level Commands
!%+
001
24<
001
Model Structure
!(2
001
$(;
001
Problem Solving with TK
!'M
001
$R8
002
Expression
!+)
Logical Expression
!.#
001
$XV
001
Name Syntax
!*9
001
$^)
000
001
&IJ
001
Name Syntax
!*9
001
&PA
005
Arithmetic Expression
!02
Relational Expression
!/7
Logical Expression
!.#
Symbolic Expression
!-C
Indeterminate Expressions
"E9
001
&V7
001
Expression
!+)
001
&ZI
003
Relational Expression
!/7
Boolean Functions
!8+
Expression
!+)
001
&^6
002
Expression
!+)
Arithmetic Operators
!1-
001
'%=
002
Expression
!+)
Arithmetic Operators
!1-
001
5F.
002
Arithmetic Expression
!02
Relational Expression
!/7
012
%,+
%2+
%4@
%<7
%<@
%?Y
%B=
%GD
%QQ
%YB
&&F
&2]
000
001
%2+
001
Built-in Functions
!24
001
%4@
001
Built-in Functions
!24
001
%<@
001
Built-in Functions
!24
001
%?Y
001
Built-in Functions
!24
001
%B=
001
Built-in Functions
!24
001
%GD
001
Built-in Functions
!24
001
%QQ
002
Built-in Functions
!24
Complex Arithmetic
!:<
001
%YB
002
Logical Expression
!.#
Built-in Functions
!24
001
&&F
001
Built-in Functions
!24
001
&2]
001
Built-in Functions
!24
001
'*T
001
Complex Functions
!7*
001
*U-
000
001
*\3
002
Expression
!+)
Rule Syntax
!(_
001
+!#
002
Expression
!+)
Rule Syntax
!(_
001
+)"
001
Expression
!+)
001
+,Y
001
Built-in Functions
!24
001
+3D
001
Name Syntax
!*9
001
+6H
001
Built-in Functions
!24
001
+;2
001
Built-in Functions
!24
001
+?R
001
Values
!*H
001
+D$
001
Built-in Functions
!24
001
+I'
001
Expression
!+)
001
+OB
001
Complex Arithmetic
!:<
001
+S=
001
Expression
!+)
001
+W*
002
Rule Syntax
!(_
Complex Arithmetic
!:<
001
+]I
001
Expression
!+)
001
,"+
001
Values
!*H
001
,%M
000
001
,)S
001
Editing Commands
"$H
001
,.*
001
Blank Command
"&$
001
,1F
001
Editing Commands
"$H
001
,9@
001
Save Command
"4-
001
,F(
001
Load Command
"16
001
,R[
001
Disk Index
"0A
001
,]G
001
Load Command
"16
001
-##
000
001
-(\
000
001
-,@
000
001
-1>
001
Blank Command
"&$
001
-:$
000
001
->)
001
Expression
!+)
001
-BG
001
Disk Index
"0A
001
-H#
001
Disk Index
"0A
001
-L;
000
001
-P2
001
Status Field
"7'
001
-V+
000
001
-Z6
001
Configuration
!$\
001
-]Q
001
Disk Index
"0A
001
.#%
001
Disk Index
"0A
001
.(*
001
Disk Index
"0A
001
.*#
001
Disk Index
"0A
001
..S
000
001
.2S
001
Disk Index
"0A
002
.7X
.Y6
000
001
.8:
000
001
.>1
000
001
.CB
000
001
.GP
000
001
.KA
000
001
.Q!
001
Disk Index
"0A
001
.TB
000
002
.X0
.Y6
000
002
.\O
.Y6
000
002
/%8
._0
000
001
/))
000
002
/-<
._0
000
002
//7
._0
000
002
/0T
._0
000
002
/26
._0
000
002
/6@
._0
000
002
/8`
._0
000
002
/;B
._0
000
002
/>6
._0
000
002
/A+
._0
000
001
/CC
000
002
/FL
._0
000
001
/H1
000
002
/K'
._0
000
001
/LH
000
002
/OP
/P,
000
002
/S\
._0
000
002
/V"
._0
000
002
/Y)
/P,
000
002
/YE
/P,
000
001
/Z!
000
001
/\E
001
Symbolic Value
!*H
001
/^J
001
Iterative Solver
"+B
001
0)O
000
001
0*[
000
001
0/T
001
Iterative Solver
"+B
001
09.
002
Overdefined
!\%
Comparison Tolerance
"F$
001
0A1
001
Inconsistent
![)
001
*:N
001
Storage Command
"//
001
*AJ
002
Slash Commands
""=
Sheet Select Command
!_L
001
'00
004
Variable Sheet
!`=
Rule Sheet
!`L
Unit Sheet
"!@
Select Sheet Command
!_L
001
'7+
002
Sheets
!^+
Window Command
!],
001
2:R
000
001
2D#
002
Status Field
"?&
Rule Syntax
!(_
001
2H[
002
Unit Sheet Fields
"@'
Unit Conversion
"@G
001
'=J
008
Editing Commands
"$H
Window
!],
Storage
"//
Print
".'
Examine
"6X
Reset
"6I
Quit
".K
Top Level Commands
!%+
001
'LF
006
Edit Field
"'0
Blank
"&$
Delete
"'V
Insert
"(<
Copy
"&J
Move
")"
001
'W?
001
Editing Commands
"$H
001
'\U
001
Editing Commands
"$H
001
(*+
001
Editing Commands
"$H
001
($W
001
Editing Commands
"$H
001
(3<
001
Editing Commands
"$H
001
(:G
001
Editing Commands
"$H
001
*L1
002
Direct Solver
"*Q
Iterative Solver
"+B
001
-49
000
001
$1V
002
Solvers
"K(
Solve Command
")H
001
$<X
007
Solvers
"K(
Solve Command
")H
Direct Solver
"*Q
Comparison Tolerance
"F$
Iteration Count
"H"
Convergence Factor
"I!
Troubleshooting
"J"
001
(F\
001
Slash Commands
""=
001
(RN
001
Slash Commands
""=
001
)$J
004
Load File
"16
Save File
"4-
Delete File
"5S
Disk Index
"0A
001
)-'
002
Storage Command
"//
Wildcards
"ME
001
)D@
003
Storage Command
"//
Disk Index
"0A
FREETK Limits
!$M
001
)V/
005
Save Model
"4-
Save Variables
"4O
Save Units
"51
Disk Index
"0A
Storage Command
"//
001
)]=
001
Save Options
"2@
001
*%]
001
Save Options
"2@
001
*-/
001
Save Options
"2@
001
*4!
002
Storage Command
"//
Disk Index
"0A
001
(Z+
000
001
3.B
000
001
3=(
001
Variable Sheet
!`=
001
3FX
003
Variable Sheet
!`=
Values
!*H
Expressions
!+)
001
3MZ
002
Name Syntax
!*9
Variable Sheet
!`=
001
3PF
001
Variable Sheet
!`=
001
3Y+
004
Variable Sheet
!`=
Unit Conversion
"@G
Display Unit
";L
Calculation Unit
"=)
001
46G
004
Unit Field
":(
Calculation Unit
"=)
Unit Name
!*9
Unit Conversion
"@G
001
40U
003
Display Unit
";L
Unit Name
!*9
Unit Conversion
"@G
001
4%:
000
001
4(_
001
Iterative Solver
"+B
001
4<K
001
Rule Sheet
!`L
001
4G%
001
Rule Syntax
!(_
001
2N(
001
Unit Sheet
"!@
001
2[/
002
Unit Sheet
"!@
Unit Field
":(
001
5^2
005
Status Line
"C:
Prompt/Error Line
"D"
Window Command
!],
Configuration File
!$\
Select Sheet Command
!_L
001
5%W
001
Screen Composition
"A8
001
52_
003
Screen Composition
"A8
Iteration Count
"H"
Convergence Factor
"I!
001
5UJ
001
Zero-by-Zero Division
"L"
001
4KH
003
Typical Value
"G8
Iterative Solver
"+B
Overdefined Problem
!\%
001
4YC
001
Comparison Tolerance
"F$
001
6%R
002
Iterative Solver
"+B
Convergence Factor
"I!
001
63(
002
Iterative Solver
"+B
Comparison Tolerance
"F$
001
7BZ
003
Solvers
"K(
Examine Command
"6X
Help on Help
!!S
001
6C)
002
Direct Solver
"*Q
Iterative Solver
"+B
001
73Z
001
Indeterminate Expressions
"E9
001
7:D
001
Troubleshooting
"J"
001
6:S
000
001
58`
000
001
#M<
000
145
┌────── Getting Started ──────┐
!#.
│   Problem Solving with TK   │
!'M
│   Model Structure           │
!(2
│   Rule Syntax               │
!(_
│   S o l v e r s             │
"K(
│   Unit Conversion           │
"@G
│   Screen Composition        │
"A8
│   S h e e t s               │
!^+
│   Top Level Commands        │
!%+
│   Saving and Loading        │
"//
│   Troubleshooting           │
"J"
│   How to Use Help           │
!!S
└──────── Help Index ─────────┘
!"L
═════════════  A  ═════════════
!!S
Arithmetic Expression
!02
Arithmetic Operators
!1-
═════════════  B  ═════════════
!!S
Beep Signal
"LQ
Blank Command, /B
"&$
Boolean Functions
!8+
Built-in Functions
!24
═════════════  C  ═════════════
!!S
Calculation Unit
"=)
Comment Field
">1
Comparison Tolerance
"F$
Complex Arithmetic
!:<
Complex Functions
!7*
Conditional Rule
!(_
Configuration
!$\
Convergence Factor
"I!
Copy Command, /C
"&J
═════════════  D  ═════════════
!!S
Delete Command, /D
"'V
Delete File, /SD
"5S
Direct Solver
"*Q
Disk Index
"0A
Display Unit
";L
═════════════  E  ═════════════
!!S
Edit Field Command, F5
"'0
Editing Commands
"$H
Examine Command, /E
"6X
Exponential and Logarithmic Functions
!4J
Expression
!+)
Expression, Arithmetic
!02
Expression, Logical
!.#
Expression, Relational
!/7
Expression, Symbolic
!-C
═════════════  F  ═════════════
!!S
First Guess
">@
FREETK
!$M
Function Keys
!&=
Function Reference
!)X
═════════════  G  ═════════════
!!S
Getting Started
!#.
Global Filename Characters
"ME
═════════════  H  ═════════════
!!S
Help
!!S
Help Index
!"L
Hyperbolic Functions
!52
═════════════  I  ═════════════
!!S
IF Rules
!(_
Inconsistent Rule
![)
Indeterminate Expressions
"E9
Input Field, Variable Sheet
"7K
Insert Command, /I
"(<
Iteration Count
"H"
Iterative Solver
"+B
═════════════  L  ═════════════
!!S
Limits of FREETK
!$M
Load File, /SL
"16
Logical Expression
!.#
═════════════  M  ═════════════
!!S
Mathematical Constants
!3:
Memory Indicator
"C:
Model Structure
!(2
Move Command, /M
")"
Multi-Argument Functions
!9,
═════════════  N  ═════════════
!!S
Name Field, Variable Sheet
"8N
Name Syntax
!*9
Navigation Commands
!'%
Non-Invertible Mathematical Functions
!6B
Numeric Value
!*H
═════════════  O  ═════════════
!!S
Other Invertible Mathematical Functions
!5Z
Output Field, Variable sheet
"9D
Overdefined Problem
!\%
Overwrite Filename
!\G
═════════════  P  ═════════════
!!S
Precedence of Operators
!1-
Print Command, /P
".'
Problem Solving
!'M
Prompt/Error Line
"D"
═════════════  Q  ═════════════
!!S
Question Mark, ?
"M6
Quit Command, /Q
".K
═════════════  R  ═════════════
!!S
Relational Expression
!/7
Reset Command, /R
"6I
Rule Field
"?F
Rule Sheet
!`L
Rule Syntax
!(_
Rule, Conditional
!(_
Rule, Unconditional
!(_
═════════════  S  ═════════════
!!S
Save Model, /SS
"4-
Save Options of Storage Command
"2@
Save Units, /SU
"51
Save Variables, /SV
"4O
Screen Composition
"A8
Select Sheet Command, =
!_L
Sheets
!^+
Slash Commands, /
""=
Solution Indicator
"C:
Solve Command, F9
")H
Solvers
"K(
Status Field, Rule Sheet
"?&
Status Field, Variable Sheet
"7'
Status Functions
!9T
Status Line
"C:
Storage Command, /S
"//
Symbolic Expression
!-C
Symbolic Value
!*H
═════════════  T  ═════════════
!!S
TK-Specific Functions
!9T
Top Level Commands
!%+
Trigonometric Functions
!4"
Troubleshooting
"J"
Typical Value
"G8
═════════════  U  ═════════════
!!S
Unconditional Rule
!(_
Unit Conversion
"@G
Unit Field, Variable Sheet
":(
Unit Name
!*9
Unit Sheet
"!@
═════════════  V  ═════════════
!!S
Values
!*H
Variable Name
!*9
Variable Sheet
!`=
Variable Subsheet
!`=
═════════════  W  ═════════════
!!S
Wildcards
"ME
Window Command, /W
!],
═════════════  Z  ═════════════
!!S
Zero-by-Zero Division
"L"
003
UNKNOWN

No Help was found for this context.
003
This help file was composed by
Magnus St. Norddahl in 1986.
Copyright 1986 Universal Technical Systems, Inc.
019
HOW TO USE HELP:
- From anywhere in FREETK press F1 to get help
  on the feature, error, or place that the
  cursor is covering (e.g. to get help on Rule
  Sheet, press = R F1).
- If (More) is shown in the lower right corner,
  PgDn will show more information.
- The arrow keys will move you among the Related
  Topics, if any, or among the entries in the
  Index.  Press ─┘ to select a topic.
- Help commands:
     ┌─────────┬──────────────────────────┐
     │ PgDn    │ displays next screen     │
     │ PgUp    │ displays previous screen │
     │ L       │ displays last topic      │
     │ I       │ displays the Help Index  │
     │ F1      │ displays this screen     │
     │ Q or F2 │ quits Help               │
     └─────────┴──────────────────────────┘
019
HOW TO USE THE HELP INDEX:
- From any Help screen press  I  to invoke the
  Help Index.  If you are anywhere else in
  FREETK, press  F1 I  or  ? I .
- The arrow keys  or  will move you along the
  index.  Pressing ─┘ will select the topic
  covered by the cursor.
- The next time the Help Index is displayed, the
  cursor will be in the same place you left it
  the last time.
- You may read through the major topics listed
  in the box on the first page of Help Index to
  familiarize yourself quickly with FREETK.
- The Help commands apply to the Help Index with
  the following additions or modifications:
   -  PgDn  or  PgUp  displays the next or the
                  the previous index page,
   -  Home  or  End   moves the cursor to the
                  beginning or end of the Index.
017
TK MODELS serve as a base for problem solving
in TK.  The models used with FREETK consist of:

- Rules declared in the RULE SHEET
- Variables declared in the VARIABLE SHEET with
  attributes defined in Variable Subsheets
- Unit conversions defined in the UNIT SHEET

NOTES:
- TK models used with TK Solver Plus may take
  advantage of six other sheets in addition
  to the three sheets mentioned above:
      List Sheet      Global Sheet
      Plot Sheet      Function Sheet
      Table Sheet     Numeric Format Sheet
- Models developed in FREETK can be used
  with TK Solver Plus
019
The DIRECT SOLVER
  is activated by pressing F9.  The Output
  fields on the Variable Sheet are then
  cleared and the new solution displayed.

SOLUTION OF A SINGLE EQUATION:
  The Direct Solver solves an equation (rule)
  for an unknown variable, provided the values
  of all the other variables in that equation
  are known.  The unknown must not appear more
  than once and must not be an argument of a
  non-invertible function.

SOLUTION OF A SYSTEM OF EQUATIONS:
  The Direct Solver scans through the rules of a
  model and resolves them one after another
  until no further evaluation is possible.
  After each variable is evaluated it is
  substituted into the other rules.
040
The ITERATIVE SOLVER
  solves equations or sets of equations that
  cannot be solved by the Direct Solver alone.

DESCRIPTION:
  The Iterative Solver has to be used for
  solving equations or sets of equations which
  cannot be solved by the simple substitution,
  inversion and evaluation performed by the
  Direct Solver.  In order to invoke the
  Iterative Solver, one or more unknown
  variables must be assigned guess values
  which temporarily play the role of inputs.

  The additional inputs make some equations
  overdefined (i.e., they cause errors inter-
  nally).  The Iterative Solver manipulates the
  guess values, and calls the Direct Solver
  repeatedly until each of the error terms is
  reduced below the Comparison Tolerance.

USAGE:
- Make sure that your problem is well-defined,
  i.e. there are no fewer independent
  equations than unknowns.
- Determine which variables remain unsolved
  after applying the Direct Solver, and which
  of them, if known, would trigger solving the
  rest of the equations (even at the expense of
  causing inconsistencies); select as few of
  them as needed.

- Type G in the Status field and a guess value
  in the Input field of the selected variables.
- Press  F9 .

NOTE:
The Iteration Count and Convergence Factor are
displayed on the Prompt/Error line during
iteration.
019
RULE SYNTAX

An UNCONDITIONAL RULE has the form:
  <expression> = <expression>

EXAMPLES:
1. a + b = c * d
2. remainder = mod(a,b)
3. theta = pi()^2 + r/2
4. y * (cos(x) - sin(y)) = ln(x)
5. x = 5

A CONDITIONAL RULE has the form:
  IF <logical expr> THEN <unconditional rule>

EXAMPLES:
1. IF x >= 0  THEN  y = sqrt(x)
2. IF and(w>0, given('z)) THEN q=ln(w)*z
3. IF evltd('a) THEN b=a*c+d
015
A FUNCTION REFERENCE has the form:
   function name(arguments)

EXAMPLES:
1. pi()
2. ln(x)
3. cos(x*y)
4. max(a,b,c,d)
5. given('a,b*c,0)

NOTE:
  In TK Solver Plus you can refer to both
  built-in and user-defined functions.  Also,
  you can call user-defined List Functions, Rule
  Functions and Procedure Functions.
026
TK NAME SYNTAX:

- TK Names can be up to 200 characters long and
  can consist of letters (including interna-
  tional letters, ASCII values 128-154 and 160-
  165; and Greek letters, ASCII values 224-238),
  digits and the special characters @ # $ % _
- TK Names CANNOT begin with a digit or contain
  blanks.
- TK Names are used as variable names.
- TK Names preceded by an apostrophe are used as
  symbolic values.
- TK Names are case-sensitive, i.e. the names
  RESULT, Result, and result are all different
  names (names of built-in functions are not
  case-sensitive).

UNIT NAMES
  Unit names can contain any typeable
  characters, except for leading and trailing
  blanks (embedded blanks are allowed).

DUPLICATE NAMES
- The same name CANNOT appear twice in the Name
  Field column of a sheet; however, the same
  name can be used for a variable and a unit.
014
BUILT-IN FUNCTIONS in FREETK can be classified
  into the following groups:

- Mathematical Constants
- Trigonometric Functions
- Exponential and Logarithmic Functions
- Hyperbolic Functions
- Other Invertible Mathematical Functions
- Non-Invertible Mathematical Functions
- Complex Functions
- Boolean Functions
- Multi-Argument Functions
- TK-Specific Functions

006
MATHEMATICAL CONSTANTS:

  PI()  constant π, 3.141592653589793
  E()   constant e, 2.718281828459045

EXAMPLE:  perimeter = 2*PI()*radius
018
TRIGONOMETRIC FUNCTIONS:

  SIN(x)         ASIN(x)       R a d i a n s
  COS(x)         ACOS(x)       ~~~~~~~~~~~~~
  TAN(x)         ATAN(x)
  ATAN2(y,x)  (4-Quadrant arc tangent of y/x)

  SIND(x)        ASIND(x)      D e g r e e s
  COSD(x)        ACOSD(x)      ~~~~~~~~~~~~~
  TAND(x)        ATAND(x)
  ATAN2D(y,x)  (4-Quadrant arc tangent of y/x)

EXAMPLES:
1. y - y0 = sin(x)/x
2. a/sind(α)=b/sind(ß)

NOTE: The inverse trigonometric functions
      return principal values.
002


009
EXPONENTIAL AND LOGARITHMIC FUNCTIONS:

  EXP(x)     number e raised to the xth power
  LN(x)      natural (base e) logarithm of x
  LOG(x)     common (base 10) logarithm of x

EXAMPLE:
  exp(-t^2)=phi

011
HYPERBOLIC FUNCTIONS:

  SINH(x)        ASINH(x)
  COSH(x)        ACOSH(x)
  TANH(x)        ATANH(x)

EXAMPLE:
  (y1-y0)*k + 1 = COSH(k*(x1-x0))



020
OTHER INVERTIBLE MATHEMATICAL FUNCTIONS:

  SQRT(x)       positive square root of x
  ROOT(x,n)     nth root of x
  ERF(x)        error function
  GAMMA(x)      gamma function,
                x-1 factorial for integer x>0

EXAMPLES:
  1. ROOT(-512,3)   returns -8
  2. GAMMA(6)   returns 120









020
NON-INVERTIBLE MATHEMATICAL FUNCTIONS:
  SGN(x)        -1 if x < 0
                 0 if x = 0
                 1 if x > 0
  ABS(x)         absolute value of x
  INT(x)         integer part of x
  ROUND(x)       x rounded to nearest integer
  ROUND(x,y)     x rounded to the nearest
                   multiple of y
  CEILING(x)     smallest integer ≥ x
  FLOOR(x)       largest integer ≤ x
  MOD(x1,x2)     remainder of x1/x2
  DIVIDE(x1,x2)  returns two values:
                   int(x1/x2) and mod(x1,x2)
  STEP(x1,x2)    1 if x1 ≥ x2, 0 if x1 < x2

EXAMPLES:
  1. CEILING(-9.7)   returns -9
  2. FLOOR(-9.7)   returns -10

020
COMPLEX FUNCTIONS:

  POWER((x1,x2),n)
    calculates a complex number equivalent to
    the complex number (x1,x2) raised to the
    nth power
  RCIS(x1,x2)
    calculates a complex number in rectangular
    form equivalent to the complex number in
    polar form where x1 is the radius and x2
    is the angle in radians
  RCISD(x1,x2)
    same as rcis, except x2 is in degrees

EXAMPLES:
  1. POWER((5,2),3)   returns (65,142)
  2. RCISD(2,60)   returns (1,sqrt(3))



034
BOOLEAN FUNCTIONS:

  NOT(x)              EQV(x,y)
  AND(series)         IMPLY(x,y)
  OR(series)

  where:
   x,y  ... logical expressions
   series .. any number of logical expressions

EXAMPLES:
  1. if or(k<3,k>5) then a=4*k
  2. if and(not(w+y>15),w+y>0) then z=ln(w+y)
  3. Answer = eqv(eqv(Tiger,Liar),not(Liar))






    DEFINITIONS (1 = true, 0 = false):
    ┌────────────┬─────┬─────┬─────┬─────┐
    │     x      │  1  │  1  │  0  │  0  │
    │     y      │  1  │  0  │  1  │  0  │
    ╞════════════╪═════╪═════╪═════╪═════╡
    │ NOT(x)     │  0  │  0  │  1  │  1  │
    │ AND(x,y)   │  1  │  0  │  0  │  0  │
    │ OR(x,y)    │  1  │  1  │  1  │  0  │
    │ EQV(x,y)   │  1  │  0  │  0  │  1  │
    │ IMPLY(x,y) │  1  │  0  │  1  │  1  │
    └────────────┴─────┴─────┴─────┴─────┘



026
MULTI-ARGUMENT FUNCTIONS:

  MAX(series)
    returns largest value from the series
  MIN(series)
    returns smallest value from the series
  SUM(series)
    returns sum of values in the series
  MEMBER(x,series)
    returns 1 or 0 if the value of x is or is
    not among the values in the series
  POLY(x,series)
    returns value of a polynomial function of x
    with coefficients specified by the series of
    values (highest-degree coefficient first,
    coefficients of 0 for missing terms)
  NPV(x,series)
    returns net present value of the series of
    payments, assuming interest rate x

EXAMPLES:
  1. max(a,34,b,c,40)
       returns 43 if a=12, b=35, and c=43
  2. poly(x,1,0,0,1)   returns 9 if x=2
  3. poly(x,1,4,3)     returns 143 if x=10

041
TK-SPECIFIC FUNCTIONS

  VALUE(var)  returns the value of variable var

Status functions, short form:
  GIVEN(var)  returns 1 or 0 if the variable var
            is or is not assigned an input value
  EVLTD(var)  returns 1 if the variable var was
              evaluated
  KNOWN(var)  returns 1 if the variable var is
              known (i.e. given or evaluated)
  where  var  is an expression that evaluates
  into a symbolic value representing a variable
  name; in the simplest case it may be just a
  variable name preceded by an apostrophe.

EXAMPLES:
  1. VALUE(a)   (returns 12 if a='R and R=12)
  2. if KNOWN('phi) then L=phi*rho
    (the L=phi*rho rule applies if phi is known)

Status functions, long form:
  GIVEN(vars,expr1,expr2)
  KNOWN(vars,expr1,expr2)
  EVLTD(vars,expr1,expr2)
    where  vars  means one or more expressions
    that evaluate into variable names.
    If all the  vars  variables are given, known
    or evaluated, the functions return expr1;
    else, they return expr2.

EXAMPLES:
  1. Rate = GIVEN('Rate,Rate,10)
   (if Rate is assigned an input value, the rule
    represents trivial identity Rate=Rate; else,
    the rule assigns a default value Rate=10)
  2. L = KNOWN('phi,phi*rho,0/0)
    (if phi is known the rule becomes L=phi*rho;
     if phi is not known the rule is ignored)
  3. if GIVEN('Θ,'α,'ß,1,0) then L=Θ*R
  (rule applies only if all Θ,α,ß are given)
016
VALUES are either NUMERIC or SYMBOLIC

  NUMERIC values are any real number in standard
  or exponential format with up to 16
  significant digits and non-zero absolute value
  between 1E-307 and 1E308, or zero.

EXAMPLES:
  1. 1.09092          3. 18437560000000000000000
  2. 6.672E-11        4. 0

  Symbolic values are any TK names preceded by
  an apostrophe.

EXAMPLES:
  1. 'x        2. 'Bank        3. 'a_row_1
018
An EXPRESSION can be:
- a CONSTANT VALUE
- a VARIABLE name
- a FUNCTION REFERENCE
- an ARITHMETIC expression
- a RELATIONAL expression
- a LOGICAL expression
- a SYMBOLIC expression

EXAMPLES (in respective order):
  1. 3409  or  'size
  2. size
  3. SQRT(speed)
  4. (y2-y1)/(x2-x1)
  5. a >= 34
  6. AND(a <= 34,b > a)
  7. GIVEN('Gas,Gas,'Oxygen)

011
A SYMBOLIC EXPRESSION can be:
- a symbolic value
- an expression that evaluates into a symbolic
  value

EXAMPLES:
1. given('soup,'entree,'dessert,'OK,'Incomplete)
2. pet           (if  pet  equals, say, 'baboon)
3. 'wood
4. '$100_note
5. 'DOG_and_PONY_show
011
A LOGICAL EXPRESSION can be:
- a relational expression
- a Boolean function
- any other expression that evaluates into
  1 (true) or 0 (false)

EXAMPLES:
  1. x <= y
  2. or(x <= y,x >= w)
  3. given('x)
  4. abs(sgn(x))
018
A RELATIONAL EXPRESSION
  has the form of two expressions linked by
  a relational operator.

  Relational operators are:
    =           equal
    <           less than
    >           greater than
    <=    =<    less than or equal to
    >=    =>    greater than or equal to
    <>    ><    not equal

  Relational expressions evaluate into numerical
  values 1 (true) or 0 (false).

EXAMPLE:
  1. x*y <= u*v
  2. animal <> 'dog
013
An ARITHMETIC EXPRESSION can be:
- two expressions linked by an arithmetic
  operator (+ - * / ^).  The constituent
  expressions (operands) must evaluate into
  numeric values.
- any expression preceded by unary + or - .

EXAMPLES:
  1. a + b / (c * d)
  2. (b > 3) + a
  3. (a+b)^ln(x)
  4. exp(cos(x)+sin(y))
  5. -SIN(X)
012
COMPLEX ARITHMETIC:
  A complex number, a+bi, is represented as a
  pair of two real numbers (a,b).

  When doing complex arithmetic, all operands
  in the rule must be paired expressions.  If a
  function is used as an operand it must be
  two-valued.

EXAMPLES:
  1. (y,yi)=(a,0)*power((x,xi),3)+(b,0)
  2. (a,b) = (c,d) * (e,f)
018
SHEETS
  Communication between the user and TK is
  conducted through the sheets.  Each sheet
  contains a different kind of information.
  In FREETK there are three sheets:
- Variable Sheet
- Rule Sheet
- Unit Sheet

NOTE:
  TK Solver Plus has six other sheets in
  addition to the three sheets mentioned above:
  - Function Sheet
  - List Sheet
  - Plot Sheet
  - Table Sheet
  - Numeric Format Sheet
  - Global Sheet
014
The SELECT command (=)
  displays any TK sheet in the current window.

USAGE:
- Type the Select command (=)
- Type the first letter of the sheet you want to
  select, or move the cursor to the desired
  sheet name in the Option Box and press ─┘.

NOTES:
- You can use the Select command from any sheet
  or subsheet
- To display a new sheet in the opposite
  window, use the Window command (/W)
024
SLASH COMMANDS (/):
  Press / to bring up the Option Box, then press
  the first letter, or move the cursor over the
  desired command and press ─┘.
  ┌──────────────────┐  ┌────────────┐
  │ Editing Commands │  │ I/O        │
  ├──────────────────┤  ├────────────┤
  │ B  Blank fields  │  │ S  Storage │
  │ C  Copy fields   │  │ P  Print   │
  │ D  Delete rows   │  └────────────┘
  │ I  Insert rows   │  ┌────────────┐
  │ M  Move rows     │  │ Other      │
  ╞══════════════════╡  ├────────────┤
  │ Changing Display │  │ E  Examine │
  ├──────────────────┤  │ R  Reset   │
  │ W  Window        │  │ Q  Quit    │
  └──────────────────┘  └────────────┘
NOTES:
- Use the Help facility to find more information
  on specific commands; e.g. /S F1 gives you
  help on the Storage command; or press /, move
  the cursor over "Storage" and press F1.
- The Function Keys duplicate some of the slash
  commands with one keystroke.
016
EDITING COMMANDS

╔══════╤═════════════════════════════════════╗
║  F5  │ Edit Field: make changes in a field ║
╟──────┼─────────────────────────────────────╢
║  /B  │ Blank a specified block of fields   ║
╟──────┼─────────────────────────────────────╢
║  /D  │ Delete a specified block of rows    ║
╟──────┼─────────────────────────────────────╢
║  /I  │ Insert blank lines in a specified   ║
║      │ block of rows; Ins inserts one line ║
╟──────┼─────────────────────────────────────╢
║  /C  │ Copy a specified block of fields    ║
╟──────┼─────────────────────────────────────╢
║  /M  │ Move a specified block of rows      ║
╚══════╧═════════════════════════════════════╝
014
The BLANK command (/B)
  blanks out a block of fields in a single
  column.

USAGE:
- Move the cursor to the first item you want
  blanked and type /B
- Move the cursor to highlight the block of
  fields you want blanked
- Press ─┘

NOTE:
- Use the Arrow keys  or , and Home, End,
  PgUp or PgDn keys to move the cursor
019
The COPY command (/C)
  copies a block of fields in a single column
  to another location.

USAGE:
- Move the cursor to the first field to copy
- Type /C
- Move the cursor to highlight the block of
  fields to be copied
- Press ─┘
- Move the cursor to the desired location to
  begin copying the defined block
- Press ─┘

NOTES:
- Use the Arrow keys, and Home, End, PgUp or
  PgDn keys to move the cursor
- COPYING INFORMATION INTO A FIELD OVERWRITES
  THE PREVIOUS CONTENTS OF THE FIELD
014
The DELETE command (/D)
  deletes a block of rows you specify.

USAGE:
- Move the cursor to any location in the first
  row you want deleted
- Type /D
- Move the cursor to highlight the block of
  rows you want deleted
- Press ─┘

NOTE:
- Use the Arrow keys  or , and Home, End,
  PgUp or PgDn keys to move the cursor
018
The EDIT FIELD command  (F5)

The in-field editor is invoked in the field
marked by the cursor when:
- you type F5 or Ctrl-E.
- FREETK detects an error in attempted entry.

WHEN IN THE EDITOR:
- Move the cue with the Arrow or Tab keys
- Add characters by typing them at the location
  marked by the cue
- Delete characters to the right of the cue
  with the Delete key (Del)
- Delete characters to the left of the cue with
  the Backspace key (──)
- Enter the changed contents by pressing ─┘
- Exit the Editor without making any changes by
  pressing F2 or Ctrl-Break
016
The INSERT command (/I)
  inserts blank row(s) in the current sheet.

USAGE:
- Move the cursor to the row where you want to
  start inserting.
- Type /I.
- Move the cursor to highlight the number of
  rows you want to be displaced by blank rows.
- Press ─┘.

NOTES:
- The row marked by the cursor and all the rows
  below it are displaced downward, but the
  cursor remains in the same place.
- Press the Ins key to insert a single row.
025
The MOVE command (/M)
  moves a specified block of rows.

USAGE:
- Move the cursor to the first row to be moved
- Type /M
- Move the cursor to highlight the block of
  rows you want to move
- Press ─┘
- Move the cursor to the destination row where
  you want to place the highlighted block
- Press ─┘

NOTES:
- Use the Arrow keys  or , and Home, End,
  PgUp or PgDn keys to move the cursor
- The Move command places the first row of the
  specified block in the destination row and the
  rest of the block in the following rows.
- Existing row(s) at and below the destination
  row are displaced to make room; they move
  upward if the block is moved down, and
  downward if the block is moved up.
- Blank rows move the same way as if they were
  filled.
025
The PRINT command (/P)
  prints a block of rows from a TK sheet to
  a printer.

USAGE:
- Move the cursor to the sheet and row where
  you want printing to begin
- Move the cursor to highlight the rows you
  want to print
- Press ─┘

NOTES:
- Use the Arrow keys  or , and Home, End,
  PgUp or PgDn keys to move the cursor
- The block is momentarily displayed on the
  screen while it is being printed
- Ctrl-Break can be used to stop printing.


- This command is more useful in the full TK
  Solver Plus where it is possible to define
  printer settings on the Global Sheet and/or
  to save the specified rows under a chosen
  filename.  Missing these options in FREETK,
  you may prefer to dump the screen using PrtSc.
016
The QUIT command (/Q)

USAGE:
- Type /Q
- Type Y to confirm the Quit command, or
- Type N or press F2 to cancel the Quit command

NOTES:
- If you want to clear information from the
  sheets without leaving FREETK, use the Reset
  command (/R).
- WHEN YOU QUIT TK, THE INFORMATION IN THE
  CURRENT SHEETS IS LOST.  If you want to save
  what you have done before you leave FREETK,
  use the Save option of the Storage command (F4
  or /SS) before quitting.
021
The RESET command  (/R)  has three options:

V (Variables) clears all input and output
  values from the Variable Sheet and Variable
  Subsheets (the First Guess values are not
  affected).
S (Sheet) clears the current sheet or subsheet.
A (All) clears all sheets and subsheets.

USAGE:
- Type /R
- Type V, S or A to select the option you want
- Type Y to confirm or N to cancel the Reset

NOTES:
- NOTHING WILL STOP A CONFIRMED RESET
- Instead of pressing V, S or A and Y or N, you
  may move the cursor in the Option Box to the
  appropriate position and press ─┘.
- Use the Quit command (/QY) rather than Reset
  if you want to leave FREETK
018
The STORAGE command (/S)
  loads, saves and deletes files from the disk.
  ┌───┬─────────────────────┐
  │ L │ Load TK File        │
  │ S │ Save Model          │
  │ V │ Variables Save      │
  │ U │ Units Save          │
  │ D │ Delete Any File     │
  └───┴─────────────────────┘
USAGE:
- Type /S and the first letter of the option
- Respond to any additional prompts
  (Press F2 or Ctrl-Break to cancel the Storage
  command without taking any action)

NOTES:
- F3 is equivalent to /SL.
- F4 is equivalent to /SS.
053
DISK INDEX
  lists disk files available to the current
  Storage command option.

USAGE:
- Type /S followed by any option character
  (You can press F3 instead of typing /SL
  or press F4 instead of typing /SS).
- Type a drive designator and pathname if
  needed.
- Type a partial filename with wildcards if you
  want to limit the display to related
  filenames.
- Press ─┘ to display the Disk Index.
- Move the cursor to the row of the desired
  file.
- Press ─┘.

NOTES:
- If the desired file is not listed you will
  have to press F2 to exit the Disk Index
  and start over.
- The Disk Index displays only files with
  .TK extension for all Storage options, except
  the Delete option (/SD) which displays files
  with any extension.
- The Disk Index displays also the names of
  subdirectories.  You can dive into a
  subdirectory by pressing  >  and return to the
  parent directory by pressing  < .






To load multiple files:
- Access the Disk Index with F3 ─┘.
- Type numbers in the Selection column to
  specify the order of loading (you can change
  the order by typing new numbers, or 0 to
  blank a selection).
- Press ─┘.

To delete multiple files:
- Access the Disk Index with /SD ─┘.
- Type numbers in the Selection column to
  specify the order of deletion (you can change
  the order by typing new numbers, or blank the
  selection by typing 0).
- Press ─┘.
- FREETK will ask for confirmation on each
  deletion.
035
The LOAD option (F3 or /SL)

USAGE:
- Press F3 or type /SL.
- Type a drive designator and pathname if
  needed.
- Type a filename, or access the Disk Index
  and move the cursor to the row of the
  filename.
- Press ─┘.

NOTES:
- If FREETK is not reset first, contents of new
  model are appended to end of current model.
- Values from new model replace current values
  of duplicate variables.
- Duplicate rules and unit conversions are
  repeated.
- A model can be loaded right after TK is
  started by supplying the model name as an
  argument from DOS.  For example:
    FREETK LOAN ─┘
  will start FREETK and then load the model
  LOAN.
- If you load a TK model that has more
  variables, units, or rules than FREETK can
  accommodate, FREETK will only load as many
  lines from each sheet as are allowed by
  FREETK and give the message "Incomplete
  load" (See "Limits of FREETK").  TK Solver
  Plus does not have these limitations.
- If you load a TK model that contains rules
  that cannot be understood by FREETK, those
  rules will be marked with the unparsed-sign %
  and ignored.
018
SAVE OPTIONS:
- Save MODEL: Saves the entire model to a file.
- Save VARIABLES: Saves only the Variable Sheet
  to a file.
- Save UNITS: Save only the Unit Sheet with
  selected unit conversions to a file.

NOTE:
  TK Solver Plus has eight other save options,
  in addition to the three mentioned above:
  - Function Save
  - Numeric Format Save
  - Plot Save
  - Table Save
  - DIF Save
  - WKS Save
  - ASCII Save
  - Configuration save
018
The SAVE option (F4 or /SS)

USAGE:
- Press F4 or type /SS
- Type a drive designator and pathname if needed
- Type a filename or, if you want to overwrite a
  file, access the Disk Index
- Press ─┘

NOTES:
- FREETK adds the .TK extension to filenames
  saved under this option if no other extension
  is specified
- If you use the Disk Index but find no
  file to overwrite, you must start over (F2)
- See the Help screen on the Storage command for
  information on saving parts of a model rather
  than the whole model
016
The SAVE VARIABLES option (/SV)
  saves the current Variable Sheet and Variable
  Subsheets in a TK file.

USAGE:
- Type /SV
- Type a drive designator and pathname if needed
- Type a filename or, if you want to overwrite a
  file, access the Disk Index
- Press ─┘

NOTES:
- FREETK adds the .TK extension to the filenames
  if no other extension is specified
- If you use the Disk Index but find no file
  to overwrite, you must start over (F2)
015
The SAVE UNITS options (/SU)
  saves the current Unit Sheet in a TK file.

USAGE:
- Type /SU
- Type a drive designator and pathname if needed
- Type a filename or, if you want to overwrite a
  file, access the Disk Index
- Press ─┘

NOTES:
- FREETK adds the .TK extension to the filenames
  if no other extension is specified
- If you use the Disk Index but find no file
  to overwrite, you must start over (F2).
016
The DELETE option (/SD)
  deletes files from disk.

USAGE:
- Type /SD
- Type a drive designator and pathname if needed
- Type the filename, or access the Disk Index
  to mark the file(s) to be deleted
- Press ─┘
- Confirm the deletion(s) by typing Y

NOTES:
- The Delete option can delete any kind of file,
  not just TK files
- See the Help screen on the Disk Index for
  information on multiple deletions
014
OVERWRITING A FILE
  means saving new information in the file in
  place of old information.


OVERWRITING DESTROYS THE OLD CONTENTS OF A FILE:

- If you want to replace the old information
  with the new information, confirm the command
  by typing Y.  This destroys the old contents
  of the file.
- If you want to preserve the old file, type N
  to cancel the Storage command.  Save the new
  file under another filename.
022
The WINDOW command (/W)
  controls the number of windows on the screen
  (one or two) and determines which sheet is
  displayed in the other window.

To change the display from two windows to
a SINGLE window:
- Place the cursor on the sheet you want to
  retain
- Press F6, or type /W1

To split the screen into TWO windows and/or to
display any sheet in the OTHER window:
- Type /W
- Type the first letter of the sheet you want
  displayed in the other window (or move the
  cursor in the Option Box to desired sheet and
  press ─┘)
NOTE:
- To display a different sheet in the current
  window, use the Select command (=) instead of
  the /W command
018
The SOLVE command (F9)
  solves a model with the Direct or Iterative
  Solvers and displays the results in the Output
  fields of the Variable Sheet.

USAGE:
- Assign the known values of input and/or guess
  values for variables in the Variable Sheet.
- Press F9

NOTES:
- TK applies the Iterative Solver only if you
  have provided guess values for one or more
  variables (by typing G in the Status field on
  the Variable Sheet or entering a First Guess
  value in the Variable Subsheet)
- The Solve command may be used from anywhere
  in FREETK
014
PARSER ERROR

  This error should not have occurred.

REMEDIAL ACTION:
- Write down everything that might relate to
  this problem; copy the offending rule or
  expression and/or dump the screen to the
  printer by pressing [PrtSc].
- If a rule entry was attempted, put a  "  in
  front of it and press [Enter].  Else, exit
  the editor pressing F2.  In any case save
  the current model to a disk.
- Notify UTS (call 1-800-HELP-UTS).
011
MISSING OPERAND

CAUSE:
  Attempting to enter a rule or expression
  which contains a dangling operator, equal
  sign, or other symbol.

SOLUTION:
  The cue points to the problem spot.  Edit the
  entry so that each operator has a name, value,
  or valid expression on either side of it.
010
MISSING OPERATOR

CAUSE:
  Attempting to enter a rule or expression
  which contains two parenthetical expressions
  with no operator between them.

SOLUTION:
  Edit the entry so that adjacent parenthetical
  expressions are related by an operator.
010
INVALID SYMBOLIC VALUE

CAUSE:
  You attempted to enter an apostrophe followed
  by a character string which is not a valid TK
  name.

SOLUTION:
  Edit the entry to replace the invalid symbolic
  value with a valid symbolic value.
009
EXPECTED OPERATOR NOT FOUND

CAUSE:
  You attempted to enter a rule that contains an
  invalid TK expression, i.e. the expression is
  missing an operator between two operands.

SOLUTION:
  Change the expression so that it is valid.
017
UNDEFINED FUNCTION

CAUSES:
- You entered an undefined function name
  immediately preceding a left parenthesis.
- You entered a variable name immediately
  preceding a left parenthesis.

SOLUTIONS:
- Edit the expression to add an operator
  between the variable name and the left
  parenthesis.

NOTE:
- In TK Solver Plus, you would have the
  option to define your own function in
  the Function Sheet.
009
INVALID FUNCTION NAME

CAUSE:
  You entered an invalid TK name immediately
  preceding a left parenthesis.

SOLUTION:
  Specify a valid function name when referring
  to a function.
011
TOO MANY FUNCTION ARGUMENTS

CAUSE:
  Attempt to enter a rule or expression that
  contains a function reference with more
  arguments than the definition of the
  function specifies.

SOLUTION:
  Edit the entry so that the function reference
  has the correct number of arguments.
011
TOO FEW FUNCTION ARGUMENTS

CAUSE:
  Attempt to enter a rule or expression that
  contains a function reference with less
  arguments than the definition of the
  function specifies.

SOLUTION:
  Edit the entry so that each function has the
  correct number of arguments.
010
NUMBER OUTSIDE NUMERIC RANGE OF PROGRAM

CAUSE:
  You attempted to enter an input value or a
  rule with a value whose absolute value is
  greater than 1E308.

SOLUTION:
  Edit the input value or the rule so that all
  values fit the numeric range of FREETK.
012
COMPLEX ARGUMENT FOUND WHERE REAL ARGUMENT
EXPECTED

CAUSE:
  Using a pair of numbers (complex number) or an
  expression which returns a complex result as
  an argument of a function requiring real
  number argument(s).

SOLUTION:
  Supply the real number argument to the
  function where it is required.
015
EXPRESSION TOO COMPLICATED

CAUSE:
  You attempted to enter an expression with too
  many pending operations or operands, or a rule
  that contains such an expression.

SOLUTION:
  Edit the expression to reduce the number of
  pending operations or operands and enter the
  new rule or expression.

NOTE:
  The cue indicates the point at which FREETK
  could no longer handle the expression
010
INVALID COMPLEX COMPUTATION

CAUSE:
  Attempting to enter in a value field an
  expression which includes complex numbers.

SOLUTION:
  Enter only numeric value or symbolic value
  or an expression that evaluates into a
  single value.
010
IF CLAUSE IN EXPRESSION

CAUSE:
  Attempting to enter a conditional clause or
  rule into a field which accepts only evaluable
  expressions.

SOLUTION:
  Enter only an expression which evaluates to an
  acceptable value.
016
MIXED REAL AND COMPLEX OPERANDS

CAUSE:
  An expression must not have both single and
  paired expressions as operands to the same
  operator.

SOLUTION:
  Edit the expression or rule so that it
  contains only single operands or only
  paired (complex) operands.

NOTE:
  As an exception, POWER requires the first
  argument to be a complex number, and the
  second to be a single expression.
010
MISPLACED COMMA

CAUSE:
  Attempting to enter a rule or expression which
  contains a comma between values or names that
  are neither function arguments nor the real
  and imaginary components of a complex number.

SOLUTION:
  Edit the entry to remove any extraneous comma.
009
MISSING SYMBOLIC VALUE

CAUSE:
  Specifying an empty symbolic value, i.e.
  having an apostrophe not followed by name.

SOLUTION:
  Edit the rule or expression so that each
  apostrophe precedes a valid TK name.
011
OUT OF MEMORY

CAUSE:
  FREETK ran out of memory while loading
  a file or parsing an entry.

SOLUTION:
  Save information with the Storage command
  and then clear some or all of the model
  with the Reset command (/R) or Delete
  command (/D).
011
INVALID RANGE SPECIFIED

CAUSE:
  Attempting to specify a block for blanking,
  moving, inserting or copying which includes
  the top area of the sheet.

SOLUTION:
  When specifying the range (block), do not
  include the fields in the fixed area of the
  sheet.
009
BLOCK INCLUDES FIELD THAT CANNOT BE BLANKED

CAUSE:
  You attempted to blank a block of fields that
  included one or more fields that cannot be
  blanked or left blank.

SOLUTION:
  Leave the field as is.
018
NOT ENOUGH ROWS AVAILABLE ON SHEET

CAUSES:
- Attempting to insert row(s) in a sheet so
  that it would have more than 32 lines in it
  (16 lines in Rule Sheet).
- Attempting to use the Move command in a sheet
  that is full.

SOLUTIONS:
- Delete unnecessary lines, if any, before
  inserting new line(s) or moving line(s).
- If possible, combine lines to make room for
  new lines.

NOTE:
- The limitation of a specific number of rows
  in a sheet does not apply to full TK Solver.
024
INCOMPLETE SAVE

CAUSES:
- When you used the /SS (F4) command it caused
  a disk error.  (Disk errors may be caused by
  saving to a faulty disk drive, a damaged
  diskette, a write-protected diskette, or a
  diskette that is full.)
- You pressed Ctrl-Break during the save
  procedure.

SOLUTIONS:
- If the error has occurred because the
  Ctrl-Break key was pressed, begin the Storage
  command again and allow the save procedure to
  be completed.
- If the problem is elsewhere, check the disk to
  determine whether it is full or write-
  protected.  Try saving the file to a different
  disk drive or diskette.
- The incomplete save may have created a partial
  file on the first diskette.  Delete this file
  using the /SD command or an appropriate
  command at DOS level.
026
INCOMPLETE LOAD

CAUSES:
- Attempting to load a damaged file with the /SL
  (F3) command.
- Attempting to load a TK file which is not
  compatible with the running version of FREETK.
- You pressed the Ctrl-Break key during the
  loading procedure.
- Attempting to load a model that contains more
  lines for the Variable, Rule, or Unit Sheet
  than allowed in FREETK.  (Excess ignored.)

SOLUTIONS:
- If the file has been damaged, the load is
  completed up to the damaged section.
  Information that has been damaged must be
  recreated.
- If the error occurred because Ctrl-Break was
  pressed, reset FREETK (/RAY) and load the
  file again; allow the load procedure to be
  completed.

NOTE:
  The limitation of a specific number of rows
  in a sheet does not apply to full TK Solver.
021
NO FILES FOUND WITH MATCHING FILENAMES

CAUSES:
  You attempted to view the files on the disk
  with the Disk Index when there were either:
- No files available for the current Storage
  command option
- No filenames matching the wildcard you
  specified
- No diskette found in the specified drive

SOLUTION:
  Start the Storage command again and:
- Use a different wildcard specification to look
  for files on the disk
- Type a complete filename instead of looking at
  the Disk Index
- Type a path to a subdirectory containing files
  relevant to the Storage command option before
  looking at the Disk Index
- Insert a diskette into the specified drive.
012
NOT A VALID STORAGE FILE

CAUSES:
- Attempting to load a file that is not a valid
  TK model file.
- Attempting to load a TK model file that has
  been incorrectly changed with a text editor.

SOLUTIONS:
- Specify a filename for a valid TK model file.
- Modify the file again with a text editor to
  make it a valid TK model file.
012
OBJECT DELETED; SUBSHEET NO LONGER ACCESSIBLE

CAUSE:
  You attempted an action in a subsheet which
  does not exist anymore.  (When a variable is
  deleted, the associated subsheet is also
  deleted, even if the subsheet still appears
  on the screen in the other window.)

SOLUTION:
  Create a new variable.  Dive to the new
  subsheet to enter information.
010
FIELD RESERVED FOR OUTPUT

CAUSE:
  Attempting to enter a value in the Output
  field on the Variable Sheet or on a Variable
  Subsheet.

SOLUTIONS:
- Leave the field as is.
- Enter a new value in an Input field.
012
OUT OF MEMORY

CAUSE:
  Any action which uses up the remaining memory
  available for running FREETK results in an
  error and cancellation of the action in
  progress.

SOLUTION:
  Save information with the Storage command
  (/SS) and then clear some or all of the model
  with the /D or /R command.
009
FIELD CANNOT BE BLANKED

CAUSE:
  You attempted to enter blanks in a FREETK
  field that cannot be left blank.

SOLUTIONS:
- Leave the field as is
- Enter a non-blank value
015
ACTION COMMAND (!) HAS NO EFFECT ON THIS SHEET

CAUSE:
  You attempted to use the Action command (!)
  from the Unit Sheet.

SOLUTIONS:
- Press F9 to invoke the solvers.
- Go to the Variable Sheet or Rule Sheet and
  press ! .

NOTE:
  In TK Solver Plus, the Action command has
  additional uses in sheets which are not
  available in FREETK.
011
UNDEFINED VARIABLE

CAUSE:
  You attempted to enter the name of a variable
  that does not exist or does not have a value.

SOLUTIONS:
- Edit the variable name so that it refers to a
  defined variable name.
- Press F2 to cancel and try again.

011
EXPRESSION CANNOT BE EVALUATED

CAUSES:
- Attempting to enter an unevaluable expression
  on the Prompt Line during /EE or /EC.
- Attempting to enter an unevaluable expression
  in a value field (e.g. 0/0).

SOLUTION:
  Enter only valid TK expressions for
  evaluation.
012
DISK INDEX: NOT ENOUGH MEMORY TO CONTINUE

CAUSE:
  Using the Disk Index to view the contents
  of the disk exhausted the memory available
  to FREETK.

SOLUTION:
  Save all or part of the model with F4 without
  using the Disk Index so you can delete all
  or part of the model to free up memory to
  allow use of the Disk Index.
011
NO FILES SELECTED

CAUSE:
  Pressing ─┘ while pointing to a subdirectory
  in the Disk Index.

SOLUTION:
  Start the Storage command again and, when the
  cursor points to a subdirectory, use the Dive
  command  >  to see the files stored in that
  subdirectory.
010
VARIABLE DOES NOT EXIST

CAUSE:
  You attempted to enter a nonexistent
  variable for evaluation when using the
  Variable option of the Examine command.

SOLUTION:
  Repeat the command and enter the name of an
  existing variable.
014
NO VARIABLE NAME

CAUSE:
  Attempting to enter a "G" in the Status field
  of a variable when there was no name in the
  Name field.

SOLUTIONS:
- Enter a rule containing the variable in the
  Rule field on the Rule Sheet before using the
  Status field.
- Enter the variable name into the Name field on
  the Variable Sheet before using the Status
  field.
008
WARNING: PARSER ERRORS DETECTED DURING LOADING

CAUSE:
  Loading a model with invalid rules.  Those
  rules that are left unparsed are marked with
  a  %  sign in the Status field.  These rules
  should be edited and modified before the model
  is used.
009
INVALID CONFIGURATION FILE

CAUSE:
  The FREETK.CFG file is not set up correctly.

SOLUTION:
  Refer to the related topic "Configuration"
  for the correct format and contents of the
  configuration file.
013
INVALID FILE SPECIFICATION

CAUSE:
  A string of up to 200 characters may be
  entered as a filename, but the length and
  validity of a file specification is usually
  determined by the operating system of the
  computer.

SOLUTIONS:
- Check your operating system manual for a valid
  filename.
- Enter a valid filename.
012
FILE DOES NOT EXIST

CAUSE:
  Attempting to load a file that does not exist
  in the specified directory.

SOLUTIONS:
- Specify an existing filename (and a pathname
  if applicable) for the file to be loaded
- Access the Disk Index to view the files
  available in the current directory and
  subdirectories
007
FILE ALREADY EXISTS

CAUSE:
  Same filename has been used before.

SOLUTION:
  Try entering another filename
011
FILE IS PROTECTED

CAUSES:
- You attempted a storage action to a filename
  that is protected by the operating system.
- You attempted a storage action specifying
  a directory rather than a file name.

SOLUTIONS:
- Specify another filename or drive specifier.
- Insert another diskette.
011
DISK IS PROTECTED

CAUSE:
  Attempting to save a model to a
  write-protected diskette.

SOLUTIONS:
- Take the write-protection tab off the
  diskette, so it can be written to.
- Save to a different diskette which is not
  write protected.
012
DISK SPACE OR DISK DIRECTORY FULL

CAUSES:
- Attempting to save to a disk that has too
  little space left to store the file.
- The disk already contains the maximum number
  of files allowed on the disk by your operating
  system.

SOLUTIONS:
- Delete some files first.
- Save the file to a different disk.
001
DISK RELATED SOFTWARE ERROR
014
NO SUCH DEVICE OR DEVICE NOT READY

CAUSE:
  Most likely you tried to save a file to a
  drive that was not ready (no diskette, or
  drive door not closed).

SOLUTIONS:
- Check the disk and the drive.
- Check the drive specifier in the file
  specification.
- See your operations manual for further
  information about device names and drive
  specifiers.
013
DISK DATA OR I/O ERROR

CAUSES:
- You attempted an action that caused a hardware
  read/write error.
- You attempted to use a worn or damaged
  diskette.

SOLUTION:
  Try another diskette; refer to your hardware
  operations manual for hardware diagnostic
  tests; note this message and contact your
  computer dealer.
010
DISK HARDWARE ERROR

  You attempted an action that caused a hardware
  read/write error.

SOLUTION:
  Try another diskette; refer to your hardware
  operations manual for hardware diagnostic
  tests; note this message and contact your
  computer dealer.
010
END OF FILE

CAUSE:
  You attempted to load an incomplete or
  improperly formed file with the Load file
  (/SL) option of the Storage command.

SOLUTION:
  Try creating a new copy of the file and
  repeating the load action.
014
LINE TOO LONG

CAUSES:
- You attempted to load a file that contains a
  line that is too long.
- You attempted to load an improperly formatted
  file.
- A line end character was removed with a text
  editor.

SOLUTIONS:
- Press Ctrl-Break to cancel the load action.
- Try to recreate the file and reload it using
  the same machine.
010
FILENAME CONTAINS WILDCARD

CAUSE:
  Wildcards can not be used in filenames in
  FREETK.

SOLUTION:
  If you want a directory listing when saving
  or loading a file, press  ─┘ when prompted
  for a filename.
010
DEVICE IS NOT MOUNTED

CAUSE:
  You attempted a print or storage action to a
  device name that is not connected.

SOLUTION:
  See your operations manual for further
  information about device names and drive
  specifiers.
004
UNKNOWN ERROR

CAUSE:
  This error should not have occurred.
007

SOLUTION:
- Dump the screen to a printer and/or write down
  everything that might relate to this problem.
- Save the current model to a disk right away
  if possible.
- Notify UTS (call 1-800-HELP-UTS).
006
SYSTEM ERROR

CAUSE:
  This error message appears as the result of
  an unknown program error that interfered with
  the evaluation of an expression.
011

SOLUTIONS:
- Review the offending rule and other rules and
  input values to see what caused the error.
- If the error occurred during iteration: change
  the guess value(s) and/or review the strategy
  of using the Iterative Solver.
- If the error occurred when entering or exami-
  ning an expression: edit the expression or
  examine the ingredients or make a new entry.

008
DIVISION BY ZERO

CAUSES:
- Attempting to enter an expression the
  evaluation of which would involve division
  of a non-zero number by zero.
- Attempting to divide a non-zero number by
  zero in the process of solving a rule.
011
EXPONENT OVERFLOW

CAUSE:
  Arithmetic operation or function evaluation
  produced a value that is outside the numeric
  range of FREETK, i.e. its absolute value is
  greater than 1E308.

NOTE:
  Exponent underflow is ignored (the result is
  taken as zero).
005
ARGUMENT ERROR

CAUSE:
  The function argument supplied to the function
  is outside the domain of the function.
005
SQRT: ARGUMENT ERROR

CAUSE:
  Attempt to take square root of negative
  argument.
005
LOG: ARGUMENT ERROR

CAUSE:
  Attempt to take logarithm of zero or negative
  argument.
008
EXPONENTIATION: ARGUMENT ERROR

CAUSE:
  Attempt to perform the direct or inverse
  exponentiation operation (^) with negative
  argument and fractional exponent combined
  (e.g. evaluating (-32)^.2 or solving y=x^2
  for x when y is negative or zero).
006
ASIN: ARGUMENT ERROR

CAUSE:
  Attempt to evaluate arc sine of an argument
  with absolute value greater than 1.
  (SIN inverse may be responsible.)
006
ACOS: ARGUMENT ERROR

CAUSE:
  Attempt to evaluate arc cosine of an argument
  with absolute value greater than 1.
  (COS inverse may be responsible.)
007
ASINH: ARGUMENT ERROR

CAUSE:
  Attempt to evaluate hyperbolic arc sine of
  an argument with absolute value greater
  than 1E154.
  (SINH inverse may be responsible.)
007
ATANH: ARGUMENT ERROR

CAUSE:
  Attempt to evaluate hyperbolic arc tangent
  with an argument with absolute value greater
  than 1.
  (TANH inverse may be responsible.)
006
ATAN2: ARGUMENT ERROR

CAUSE:
  Known argument and function values are not
  consistent with each other, e.g. z=0 and
  y=1 in z=atan2(y,x).
007
VALUE: ARGUMENT ERROR

CAUSE:
  Attempt to use built-in function VALUE with
  an argument which is not a symbolic value, or
  which does not evaluate into a name of an
  existing variable.
005
MOD: ARGUMENT ERROR

CAUSE:
  The second argument of the MOD function
  evaluates to zero.
007
ACOSH: ARGUMENT ERROR

CAUSE:
  Attempt to evaluate hyperbolic arc cosine
  of an argument with absolute value greater
  than 1E154.
  (COSH inverse may be responsible.)
005
LN: ARGUMENT ERROR

CAUSE:
  Attempt to take logarithm of zero or negative
  argument.
009
POWER: ARGUMENT ERROR

CAUSE:
  The second argument supplied to the function
  was not an integer.

SOLUTION:
  Modify the model so that the second argument
  evaluates into an integer.
001
GIVEN: ARGUMENT ERROR
010

CAUSES:
  - An argument specifying a variable to be
    examined does not evaluate into a symbolic
    value.
  - Attempt to use two arguments.

SOLUTIONS:
  - Check and modify the arguments.
  - Use 1, 3 or more arguments.
006
ERF: ARGUMENT ERROR

CAUSE:
  Attempt to evaluate an inverse erf of an
  argument with an absolute value greater
  than 1.
007
GAMMA: ARGUMENT ERROR

CAUSES:
  - Attempt to evaluate gamma function of
    zero or negative argument.
  - Attempt to evaluate the inverse gamma
    function of a value less than .886 .
001
KNOWN: ARGUMENT ERROR
001
EVLTD: ARGUMENT ERROR
006
INVALID BOOLEAN ARGUMENT

CAUSE:
  Attempt to evaluate a Boolean function or
  inverse Boolean function of an argument or
  arguments other than 0 or 1.
005
INVALID SYMBOLIC COMPUTATION

CAUSE:
  Attempt to perform a numeric operation on
  a symbolic value, e.g. 3*'p or sin('q).
022
> ITERATION: DEPENDENCY ERROR

CAUSES:
- The number of independent equations in the
  model is less than the number of unknowns.
- The error terms generated by guesses become
  too small or too insensitive to small changes
  in guess values.

SOLUTIONS:
- Check the choice of guess variables and/or
  guess values.
- Check the number of independent equations vs.
  the number of unknowns; modify the model and/
  or reformulate the problem.
- Scale the problem up or down; review the
  strategy of using the Iterative Solver.

NOTE: TK Solver Plus with the Comparison
Tolerance and Typical Value settable on the
Global Sheet offers additional means to
control the Iterative Solver.
004
SOLUTION ABORTED

CAUSE:
  Ctrl-Break was pressed during solution.
012
OUT OF MEMORY (during iteration)

CAUSE:
  There is no room accommodate additional
  information generated and used by the
  Iterative Solver.

SOLUTION:
  Save information with the Storage command
  and then clear some or all of the model
  with the Reset command (/R) or Delete
  command (/D).
023
> ITERATION: TOO MANY GUESSES

CAUSES:
- The number of error terms generated by
  guesses is less than the number of guess
  variables.
- Some of the error terms are too small (i.e.
  they are within the Comparison Tolerance).

SOLUTIONS:
- Solve the problem with a reduced number of
  guess variables.
- Change the guess values.
- Scale the problem up or down; review the
  strategy of using the Iterative Solver.



NOTE: TK Solver Plus with the Comparison
Tolerance and Typical Value settable on the
Global Sheet offers additional means to
control the Iterative Solver.

016
> INCONSISTENT

CAUSE:
  The marked rule was checked by the Direct
  Solver and found in error.  This happens most
  often when all variables in an equation have
  have input values or were evaluated from
  other equations, and the difference between
  the left- and right-hand side is greater than
  the Comparison Tolerance.

SOLUTION:
- Blank the input value of a variable marked
  'Overdefined' or some other variable that
  may be responsible.
- Delete, cancel or edit the offending rule.
016
> OVERDEFINED

CAUSE:
  The marked variable appears in an equation
  that was found inconsistent.  The variable
  may be directly or indirectly responsible
  for this condition, which usually means that
  the problem was overdefined.

SOLUTION:
- Blank the input value of the offending
  variable (if assigned) or of any other
  variable marked 'Overdefined' or some other
  variable that may be responsible.
- Delete, cancel or edit the rule marked
  'Inconsistent'.
035
GETTING STARTED

  If you have never used TK before, print out
  the file TUTORIAL.TXT and follow the
  directions given in that file.

  If, on the other hand, you have used TK
  before, you may want to look at some of the
  models that are supplied with the FREETK
  package; for instance, LOAN.TK.  You can
  load the model using the Load command (F3).
  It is also possible to load a model at the
  same time you start up FREETK.  For example,
  from DOS you can type:
              FREETK LOAN ─┘
  which will start FREETK and then load the
  model LOAN.
NOTES:
- Remember that the Help file has to be in the
  current directory to be accessible.
- FREETK is compatible with TK!Solver and TK
  Solver Plus, but if you load a model that
  contains objects that cannot be understood
  by FREETK (e.g. plots, lists, tables, user-
  defined functions, etc.), FREETK will ignore
  them.  Also if you load a model containing
  rules that cannot be interpreted by FREETK,
  those rules will be marked with a  %  sign
  (see  "Load File").
- FREETK can be configured to your computer
  system with a FREETK.CFG file (see
  "Configuration").
- You may find it helpful to read through the
  rest of the major topics in the Help Index
  box.
044
CONFIGURATION OF FREETK

  FREETK can be configured by modifying the
  EXAMPLE.CFG text file that is provided with
  the package.  This ASCII file contains the
  default settings and can be modified with a
  text editor.  The default settings are:

" TK Solver configuration file
Use Color:                  Yes
Slow Redisplay:             Yes
Solid Line Headings:        Yes
Bottom Prompt Line:         Yes

USAGE:
- To change the configuration, edit EXAMPLE.CFG
  and change the "Yes" to "No" for each setting
  that you want to change.  Then save the file
  under the name FREETK.CFG.

- If the FREETK.CFG file is not found in the
  current directory, FREETK will default to the
  values above.
- If you have a color card, but use a monochrome
  monitor, you should change the "Use Color"
  setting to "No."
- "Slow Redisplay" set to "Yes" prevents snow
  from appearing when using color cards with
  memory which is not dual-ported.  If your
  color card can handle fast redisplay, then
  change this setting to "No."
- If you use the screen-dump feature (shift
  PrtSc) or the Print command to print parts of
  the model to the printer, and your printer
  cannot print graphics characters, "Solid Line
  Headings" should be set to "No."
- If you are familiar with the command structure
  of TK and you do not need the assistance of
  the bottom prompt line, you may want to set
  "Bottom Prompt Line" to "No."
- In TK Solver Plus the above configuration can
  be done by modifying the values on the Global
  Sheet and saving the values directly from the
  program with a "Save configuration" command.
053
LIMITS OF FREETK

FREETK represents the central components of
TK Solver Plus, the equation solvers, complete
with an automatic unit conversion feature.

The purpose of FREETK is to offer the PC user
community at large the taste of rule-based
programming applied to numeric computation.
Available in FREETK are three out of nine
information sheets:
  Rule Sheet  -  Variable Sheet  -  Unit Sheet

Present in TK Solver Plus but omitted here are
 (User-defined) Function Sheet  -  List Sheet
  Plot Sheet  -  Table Sheet  -  Global Sheet
             Numeric Format Sheet



The names of missing sheets indicate the limits
of FREETK: TK Solver Plus works not only with
single values but also with lists of values,
it plots the results, it provides spreadsheet-
like tabular interface, it accepts global
settings, and it offers numeric formatting.
Most importantly, TK Solver Plus supports so-
called user-defined functions that are used
for handling empirical relationships, blen-
ding numeric and non-numeric information,
complementing TK with sequential programs
and, generally, turning it into an integrated
and open-ended problem-solving environment.

FREETK even without all these additional
features is a powerful equation processor
ready to handle countless real-life problems.



FREETK also has limits on the number of lines
that can be accessed on its three sheets:
  1. Maximum of 32 lines on Variable Sheet.
  2. Maximum of 16 lines on Rule Sheet.
  3. Maximum of 32 lines on Unit Sheet.
  4. Maximum of 32 entries in Disk Index.
     (Use subdirectories if you have more than
      32 files on your disk.)
In TK Solver Plus these limits are 32000.

Refer to the README.TXT, FTKINTRO.TXT and
REFCARD.TXT files for information on
TK Solver Plus and FREETK.
015
TOP LEVEL COMMANDS
└──┬─────────────┘
   ├──────── Function Keys
   ├──────── Slash Commands
   └──────── Navigation Commands


  Move the cursor over one of the Related Topics
  below and press ─┘.

NOTES:
- If you need help on Help, press F1.
- If you ever need to get back to this screen:
  Press F1 ─┘    (from within Help).
  Press F1 F1 ─┘ (from FREETK).
019
FUNCTION KEYS
╔═════════════════════╦═══════════════════════╗
║ F1: On-Line Help (?)║ F2: Cancel Entry      ║
╠═════════════════════╬═══════════════════════╣
║ F3: Load File (/SL) ║ F4: Save File (/SS)   ║
╠═════════════════════╬═══════════════════════╣
║ F5: Edit (Ctrl-E)   ║ F6: One-Window (/W1)  ║
╠═════════════════════╬═══════════════════════╣
║                     ║                       ║
╠═════════════════════╬═══════════════════════╣
║ F9: Solve           ║                       ║
╚═════════════════════╩═══════════════════════╝
USAGE:
  From any sheet, press the desired key and the
  command (command sequence) will be executed.
NOTE:
  F7, F8, and F10 are for displaying plots,
  displaying tables, and List Solving,
  respectively, in TK Solver Plus.
028
NAVIGATION COMMANDS:

─    Moves the cursor to the right
─    Moves the cursor to the left
     Moves the cursor up one line
     Moves the cursor down one line
──▌  Moves the cursor to the rightmost field
▐──  Moves the cursor to the leftmost field

Home  Moves the cursor to the top of the sheet
End   Moves the cursor to the end of the sheet
PgDn  Moves the cursor N-2 lines down
PgUp  Moves the cursor N-2 lines up
      (where N is the number of lines displayed
       in the current window)

=     Select Sheet command.  It selects the
      sheet to be displayed in the current
      window.

;     Switch command.  If two windows are
      displayed on the screen, the Switch
      command moves the cursor between them,
      otherwise it has no affect.
>     Dive command.  Brings up a relevant
      subsheet in the current window.
<     Return command.  Brings back original
      sheet or subsheet.
013
PROBLEM SOLVING WITH FREETK
  involves three stages:

  1. Bringing up the model either by loading an
     appropriate TK file or by developing the
     model (i.e. typing in the rules into the
     Rule Sheet).

  2. Formulating the problem (i.e. assigning
     appropriate input or guess values to
     selected variables in the Variable Sheet).

  3. Solving the model by pressing F9.
017
The VARIABLE SHEET
  contains information about the variables used
  in the model.  Each row can contain data
  related to one variable.

  There are VARIABLE SUBSHEETS containing more
  information about each variable; items entered
  into fields in the Variable Sheet are updated
  simultaneously in corresponding fields in
  Variable Subsheet.

ACCESS:
- Type =V to display it in the current window.
- Type /WV from one-window display to display
  it in the second window.
- Use the Dive command (>) to see the Variable
  Subsheet associated with a specific variable.
010
The RULE SHEET
  contains the equations for a model.  Each row
  can contain one equation and its status (and,
  optionally, a comment following a double
  quote, " ).

ACCESS:
- Type =R to display it in the current window.
- Type /WR from one-window display to display
  it in the second window.
010
The UNIT SHEET
  contains definitions for conversions between
  units of measurement used in a model.  Each
  row in the Unit Sheet defines a conversion
  between two units of measurement.

ACCESS:
- Type =U to display it in the current window.
- Type /WU from one-window display to display
  it in the second window.
030
UNIT SHEET FIELDS

FROM Field: Contains the first unit.

TO Field: Contains the second unit.

MULTIPLY BY Field: Contains the unit conversion
  factor, i.e. number of second units equivalent
  to a single first unit.
  If left blank, a factor of 1 is assumed.

ADD OFFSET Field: Contains the value in the
  second unit equivalent to a value of zero in
  the first unit.
  If left blank, an offset of 0 is assumed.



NOTE:
MULTIPLY BY and ADD OFFSET fields accept any
valid numeric value or expression.

EXAMPLES:
1. Conversion from degrees Celsius to degrees
   Fahrenheit is defined by a conversion factor
   of 1.8 (may be entered as 9/5) and an offset
   value of 32.
2. Conversion from radians to degrees may be
   defined by a conversion factor of 180/pi()
   which evaluates into  57.2957795131 .
033
UNIT CONVERSION

The Unit Conversion feature in FREETK works as
follows:
- Each variable may be optionally assigned a
  Calculation Unit and a Display Unit.
- All calculations are performed in Calculation
  Units and the input and output values are
  displayed in Display Units.
- The Display Units are defined in the Unit
  Fields in the Variable Sheet.
- A Display Unit entered into a blank Unit Field
  also becomes a Calculation Unit.
- Both Calculation and Display Units may be
  changed in the appropriate fields in the
  Variable Subsheets.
- When the Display Unit is changed the input or
  output value is converted instantaneously.
- The conversion is performed according to the
  unit conversion definitions in the Unit Sheet.

NOTES:
- The assigned Calculation Units must be
  consistent with the usage of the variables in
  the rules.
- The unit conversion may be defined indirectly.
  For instance, if the conversions in/cm, ft/in
  and m/cm are defined, the conversion between
  ft and m is automatically defined.
- If the conversion between the Calculation
  Unit and the desired Display Unit is not
  defined in the Unit Sheet, a question mark (?)
  appears in front of the value.
036
The EXAMINE command (/E) has three options:
Variable, Expression, and Copy.

The VARIABLE option
  allows you to EXAMINE the value of a variable
  when debugging the model or analyzing error
  conditions.

USAGE:
- Type /EV.
- Enter variable name and press ─┘.

The EXPRESSION option
  allows you to EXAMINE the value of an
  expression when debugging the model or
  analyzing error conditions.

USAGE:
- Type /EE.
- Type in the expression and press ─┘.
The COPY option
  allows you to copy the field highlighted by
  the cursor onto the Prompt/Error line.
  Depending on contents, this text may be
  evaluated as an expression immediately
  or after editing.

USAGE:
- Type /EC.
- Type F5 for editing, if necessary
- Press  ─┘  for evaluation

NOTE:
- The Expression option or Copy option can also
  be used as a calculator: just type /EE or /EC
  and the expression you want to evaluate.
020
STATUS Field

PURPOSE:
  Shows the status of the variable and may be
  used for changing the status.  The default is
  blank.  A  >  symbol indicates that the vari-
  able is involved in an error condition.

SELECTING OPTIONS:
  Type into the Status field the first letter of
  the option you want to apply:

  I - current value will be assigned as input
      (equivalent to entering that value in the
      Input field)
  O - current value will appear in the Output
      field
  B - blanks the Input or Output field
  G - current value will be assigned as a guess
      (this is a toggle switch)
016
INPUT Field

DESCRIPTION:
  Contains the input value for a variable.

VALID ENTRIES:
- A numeric or a symbolic value.
- A syntactically correct expression that
  evaluates to a numeric or a symbolic value.

NOTE:
  If a variable is assigned units, its value
  appears in the Display Unit.  (If the con-
  version between Display Unit and Calculation
  Unit is not defined in the Unit Sheet, a  ?
  precedes the displayed value.)
008
NAME Field

DESCRIPTION:
  Contains the name of a variable.

VALID INPUTS:
- TK name (NO DUPLICATES ALLOWED WITHIN A
           NAME FIELD COLUMN ON A SHEET).
017
OUTPUT Field

DESCRIPTION:
  Contains the output value of the variable if
  the variable has one.

USAGE:
- FREETK uses the Output field for displaying
  the solution results.
- An input value or a blanked (but internally
  held) value may be moved to the Output field
  by typing letter O in the Status field.
- If a variable is assigned units, its value
  appears in the Display Unit.  (If the con-
  version between Display Unit and Calculation
  Unit is not defined in the Unit Sheet, a  ?
  precedes the displayed value.)
023
UNIT FIELD, Variable Sheet

defines the Display unit used to display the
value of the variable.

USAGE:
- Typing a unit name into a blank Unit field
  ALSO defines the Calculation unit.
- Typing another unit name changes ONLY the
  Display unit.
- The Calculation unit may be changed in the
  Variable Subsheet.
- When you change the Display unit, the
  variable value changes instantaneously
  provided that the conversion between the
  Display and Calculation units is defined
  directly or indirectly in the Unit Sheet.
  If a conversion is not defined, a  ?  will
  appear in front of the value.
- Blanking out the Unit field in the Variable
  Sheet will blank out both the Display and
  Calculation unit fields in the associated
  Variable Subsheet.
010
The COMMENT Field

USAGE:
- Use for commenting your model.
- Accepts any typeable characters.

NOTE:
  If you want to include or append a comment in
  the Rule Sheet, precede the comment with a
  double quote (").
018
FIRST GUESS Field

DESCRIPTION:
  Contains a blank or the default guess value
  you specify for the variable.

USAGE:
  Serves for automatic assignment of the spe-
  cified value as a guess and initiation of the
  Iterative Solver.  It works when the variable
  is not assigned an input value, cannot be
  evaluated by the Direct solver, and is not
  assigned another guess value manually.

VALID INPUTS:
- A numeric value.
- An expression that evaluates into a numeric
  value.
012
CALCULATION UNIT

The Calculation Unit may be assigned to a
variable by:
- entering its name in the Calculation Unit
  Field of the associated Variable Subsheet, or
- entering its name into a blank Unit Field in
  the Variable Sheet (in that case it becomes
  a Display Unit as well).

See "Unit Conversion" for the role of
calculation units in FREETK.
013
DISPLAY UNIT

The Display Unit may be assigned to a variable
by:
- entering its name into the Unit Field in the
  Variable Sheet (if the field is blank, then
  the Display Unit becomes a Calculation Unit
  as well), or
- entering its name into the Display Unit Field
  of the associated Variable Subsheet.

See "Unit Conversion" for the role of display
units in FREETK.
019
The STATUS Field
  shows the status of the rule:
- A blank indicates a successful solution of
  that rule.
- An asterisk (*) indicates an unsolved rule.
- A C indicates that the rule is switched off.
- An error symbol (>) indicates an error
  during the evaluation of the rule.
- A % indicates an unparsed rule.  The rule
  probably refers to a user-defined function
  that was defined in TK!Solver or TK Solver
  Plus.

USAGE:
- Place the cursor in the field to display an
  explanatory message on the Status line.  If
  there is an error symbol  >  press F1 for
  a help screen explaining the error.
- Press C to switch the rule off or on.
011
RULE Field

DESCRIPTION:
  Accepts equations according to the
  conventions for valid TK rules.

NOTE:
  A Rule field can also contain a comment.
  FREETK regards all text after a quotation mark
  (") in a Rule field as a comment, not subject
  to evaluation by the solvers.
030
COMPARISON TOLERANCE

DESCRIPTION:
  The Comparison Tolerance (CT) and the Typical
  value (TV) serve for checking the consistency
  of rules.  A rule is considered satisfied and
  an equation is presumed to hold if either

    RELERR ≤ CT   or   MABVAL ≤ CT * TV ,

  where
    relative error    RELERR = ABSERR / MABVAL
    absolute error    ABSERR = abs(LHE-RHE)
    maximum absolute value
               MABVAL = max(abs(LHE),abs(RHE))
    LHE,RHE  are values of left-hand side and
             right-hand side expressions.



  The CT and TV parameters play important role
  in controlling the Iterative Solver and
  terminating the iteration upon successful
  completion.

NOTE:
  In FREETK  CT = .000001  and  TV = 1 .
  In TK Solver Plus these parameters may be
  changed on the Global Sheet, in order to
  fine-tune the solvers to specific needs.
028
TYPICAL VALUE

DESCRIPTION:
  The Typical Value (TV) in conjunction with
  the Comparison Tolerance (CT) serves for
  checking the consistency of rules, and, in
  particular, for deciding on successful
  completion of iteration.

  A rule is considered satisfied and an
  equation is presumed to hold if

   max(abs(LHE),abs(RHE))  ≤  CT * TV

  where LHE,RHE are values of left-hand and
                right-hand side expressions


  If this condition is not satisfied, the
  'relative error ≤ CT' criterion is used
  for checking the rule consistency.

  In FREETK there is a fixed TV=1.

  In TK Solver Plus this parameter may be
  changed on the Global Sheet and thus the
  checking criterion adjusted to the order
  of magnitude of computed values.
027
STATUS LINE

The Status Line is the top line on TK screen.
It contains the following information (from
left to right):

-  Information related to the current cursor
   position:
   -  row number and field label,
   -  field name,
   -  field contents (e.g. full internal
      representation of a numeric value
      with up to 16 significant digits).

-  Memory Indicator, approximate amount of
   unused memory, in kbytes.

-  Solution Indicator, shows the status of
   the Variable Sheet:
   OK -- indicates no change in the Variable
         or Rule Sheet since the last solution,
         i.e. the displayed output values may
         be trusted,
   F9 -- there has been a change, and the Solve
         command  F9  should be invoked to
         restore the integrity of the sheets'
         contents.
012
PROMPT/ERROR LINE

The Prompt/Error Line is the second line on TK
screen.  It serves for

-  displaying error messages and prompts,
-  indicating which solver is being used,
-  entering names of files to be loaded, saved
   or deleted,
-  specifying variables or expressions to be
   evaluated with the /E commands, and
-  typing in other command-related information.
030
WILDCARDS  or  GLOBAL FILENAME CHARACTERS

are special characters you can use within a
filename and extension to specify a group of
files to be displayed in the Disk Index.

  ?  indicates that any character can occupy the
     given position (question mark in TK must
     be typed by pressing Ctrl-Q because  ?
     invokes Help),

  *  indicates that any character can occupy the
     given position and all the remaining
     positions in the filename or extension.





EXAMPLES:

  1. F3 rlc??a ─┘  will bring up RLC01A.TK,
     RLC05A.TK and RLC23A.TK in the Disk Index,
     and will ignore RLC01B.TK, RLC23B.TK and
     RLC01AB.TK .

  2. F3 rlc0* ─┘  applied to the same directory
     will bring up RLC01A.TK, RLC05.TK,
     RLC01B.TK and RLC01AB, and it will ignore
     RLC23A.TK and RLC23B.TK .
030
ARITHMETIC OPERATIONS
are (in order of precedence):

   ^      exponentiation
   +  -   unary plus and minus
   *  /   multiplication and division
   +  -   addition and subtraction

NOTES:
- Operations at the same precedence level are
  performed from left to right, except for
  exponentiation operations, which are performed
  from right to left.
- When arithmetic and relational operators are
  combined, the relational operators have the
  lowest precedence level.
- The order of operations may be controlled by
  parentheses.
EXAMPLES:
1.  2 + 3 * 4     evaluates into 14
2.  (2+3) * 4     evaluates into 20
3.  4e150 / 2e180 * 3e200  evaluates into 6e170
4.  4e150 * 3e200 / 2e180
                       causes exponent overflow
5.  4 ^ 2 ^ 3     evaluates into 65536
6.  (4^2) ^ 3     evaluates into 4096
7.  3 > 2 > 4     evaluates into 0
8.  3 > (2>4)     evaluates into 1
9.  2 < 3 * 4     evaluates into 1
10. (2<3) * 4     evaluates into 4
018
INDETERMINATE EXPRESSIONS

When evaluating expressions, the values of
operands or function arguments may be available,
but the information they carry may be insuffi-
cient to determine the result.  There are seven
such situations in TK:

     x = 0/0         0 = 0^x
     1 = 1^x         x = 0^0
     1 = x^0         x = atan2(0,0)
                     x = atan2d(0,0)

(the unknown  x  cannot be evaluated from any of
these equations)

TK ignores an indeterminate expression when
encountered, and leaves the rule 'unsatisfied'.
016
SCREEN COMPOSITION

The FREETK screen consists of

- Message Area: Top two lines called
  Status Line and Prompt/Error Line.

- Information Area: Lines 3 through 24, may
  contain one or two windows with TK sheets.
  The windows may be split or unsplit using
  the Window command, /W, and the sheets may
  changed using the Select Sheet command, = .

- Bottom Prompt Line (optional, may be turned
  off by an appropriate setting in the
  configuration file).
022
ITERATION COUNT

The steps performed by the Iteration Solver are
counted and the current step numbers are
displayed during the iteration on the Prompt/
Error Line.

In FREETK the Maximum Iteration Count is set to
10.  If the Iterative Solver does not find a
solution within 10 steps, it stops, FREETK
beeps, and the latest guess values and the
flag G remain in the Input and Status fields
respectively.  You may press  F9  again.  If the
Iterative Solver just needed more steps, there
is a chance that it will eventually converge to
the solution.  (It is more likely, however, that
the iteration diverged, and you should try again
with different guess values and/or variables.)
NOTE: In TK Solver Plus the Maximum Iteration
      Count may be set on the Global Sheet
      according to the needs of a particular
      problem.
018
CONVERGENCE FACTOR

is displayed during iteration on the Prompt/
Error Line.  It shows the progress of the
Iterative Solver toward the solution.

The Convergence Factor is defined as

         ln ( ABSERR / (CT*TV) )

(see explanation of terms in "Comparison
Tolerance")

If there are more guesses and error terms than
one, the maximum ABSERR (i.e. the bottleneck)
is used.  The iteration is usually considered
successful when the convergence factor falls
below zero.
015
QUESTION MARK, ?

The Question Mark's main role in FREETK is
invocation of Help (though, pressing the
function key F1 serves the same purpose).

The most frightening event for the uninitiated
is the appearance of  ?  in front of an input or
output value in the Variable Sheet.  It indi-
cates an error in the unit specification or a
missing unit conversion (check the Unit Sheet!).

If you wish to use the character  ?  (e.g. in a
comment), you have to type it by pressing
Ctrl-Q, because typing  ?  invokes Help.
083
S O L V E R S

FREETK and other versions of TK Solver program
employ two major mechanisms for solving mathe-
matical problems numerically:

- the Direct Solver using a consecutive sub-
  stitution procedure, and

- the Iterative Solver using a modified Newton-
  Raphson procedure on top of the Direct Solver.

The main strength of TK is detecting and per-
forming automatically any inverse operations
required in the process of solving equations
or satisfying rules and constraints.  This
technique covers what is commonly known as
'backsolving' or 'goal seeking'.
EXAMPLES:
1. If   y = sin(x)   is stated and  y  is known,
   TK takes  arc sine  of  y  to evaluate  x .
2. If   ln(a) = b + c*d   is stated (spelling
   out addition and multiplication), and  a,b,c
   are known, TK uses subtraction and division
   to evaluate  d=(ln(a)-b)/c .
3. If    or(sick,tired)=and(home,rest)
   is stated, and  "tired"  is known to be  1
   (true), then the Direct Solver infers that
   one should stay  home=1  and have  rest=1 ;
   it doesn't matter "sick" is known to be  1
   or  0 , or if it is unknown.

TK action in most applications comes down to
solving one or more equations, linear or non-
linear, algebraic or transcendental (hence the
epithet 'equation processor').

Typically there are  m  independent equations
with  n  unknowns (m<n).  Possible outcomes of
applying the solvers are as follows:
- Values of n-m variables are given, the
  Direct solver solves for  m  unknowns.
- The same, the Iterative Solver solves for
  m  unknowns.
- The same, solution not completed because of
  indeterminacy condition.
- The same, solution not completed because of
  domain error.
- The values of less than n-m variables given,
  solution is incomplete.
- The values of more than n-m variables given,
  one of the equations becomes inconsistent,
  and the solution process is terminated.

EXAMPLES (in order of the above cases):
Assume two equations with four variables:
           a * (.5+x)^2 = sin(y/2)
           b * (y-pi()) = ln(x)
1. x=1.5 and y=2 assigned as inputs; Direct
   Solver returns a=.21036775 and b=-.3551749.
2. a=.2 and b=-.5 assigned as inputs and  x
   is made guess = 1.5; Iterative Solver returns
   x=1.6085001 and y=2.1909884.
3. a=4/9 and y=pi() assigned as inputs; Direct
   Solver evaluates x=1 from the 1st equation,
   and the 2nd is ignored because of b=0/0.
4. a=pi() and y=4/9 assigned as inputs; Direct
   Solver returns x=-.2351325 from the 1st eq-n,
   and solution stops on attempt to take ln(x).
5. only a=pi() assigned as input; nothing is
   evaluated.
6. b=-.5, x=1.5 and y=2 assigned as inputs;
   Direct Solver evaluates a=.21036775 from the
   1st equation and stops on inconsistency error
   in the 2nd.

The solvers form the basis of TK's declarative
nature.  They are complemented in TK Solver Plus
by user-definable procedures, i.e. sequential
programs for specific tasks that are hard or
impossible to accomplish in the purely
declarative FREETK (e.g. solving differential
equations).
014
ZERO-BY-ZERO DIVISION

is one of seven indeterminate expressions that
are ignored when encountered by the solvers.

The 0/0 constructs may be used as an alternative
to conditional rules.

EXAMPLE:
  a + b = GIVEN('x,'y,c*d,0/z)
  (if  x  and  y  are assigned input values then
  the rule is a+b=c*d; else, if z<>0 then the
  rule is a+b=0, and if z=0 then the rule is
  ignored and bypassed by the solvers)
017
B E E P

indicates that FREETK was unable to follow a
command and/or complete an action because some
error conditions developed, or because the
command or action was terminated by pressing
F2 or Ctrl-Break.

In most error situations FREETK displays an
error message, and provides additional explana-
tion when  F1  or  ?  is pressed for Help.
In some cases (such as trying to move the cursor
beyond the sheet boundary or FREETK limits) it
just beeps.

When in Help, your illegal actions produce a
deeper 'thud'.
066
TROUBLESHOOTING

Most of the problems encountered when using
FREETK are not caused by the program doing
something wrong, or even by lack of TK skills
on your part (that, anyway, should be remedied
by resorting to the Help frequently).

More often than not trouble comes from half-
baked or unfit mathematical models and/or
infeasible input data or constraints.  In fact,
TK may be useful in sorting out mathematical
and other fallacies.
EXAMPLE: How long would it take to repay a
$100,000 loan at 10% interest with a monthly
payment of $500?  You can protect TK and your-
self from such absurd questions by letting your
model check for an infinite payment term.
Here are a few troubleshooting hints:
- Check the balance of number of equations,
  total number of variables, number of inputs
  and number of unknowns.  There is no way (TK
  or other) to solve for more unknowns than the
  number of independent equations.
- Mimic the Direct or Iterative Solver path to
  find out what unknown is evaluated by what
  equation.
- Use toggle switch  C  (in the rule's Status
  field) to 'turn off' the selected equations
  and isolate trouble spots.
- Add error terms to equations showing incon-
  sistency, and test them.
- Use the Examine (/E) command to check on
  variables and expressions.
- Beware of the hard-to-predict effects of
  conditional rules.
- Pay serious attention to the selection of
  guess variables and choice of guess values.
- Consider two or more roots or solutions to
  your problem when applicable.
- Remember that the sqrt function returns a
  positive root although the negative one may be
  appropriate; likewise inverse trigonometric
  functions return principal values.
- Try to avoid the iteration process straying
  into the regions of argument errors (easier to
  say than to do; it may take some luck and some
  sleuthing assisted by TK itself, i.e. turning
  the knowns and unknowns around, checking the
  error terms at the trouble spots, trying
  alternative ways, etc.).
- Beware of divergence when using the Iterative
  Solver.  Refer to the FREETK follow-up package

  (see FTKINTRO.TXT) or numerical analysis lite-
  rature for information about inner workings
  of the Newton-Raphson procedure.

The full TK Solver Plus with list solving,
graphics, procedure functions, interactive
tables, etc. is much better equipped for
thorough diagnostics and efficient trouble-
shooting than FREETK.  TK Solver Plus offers, in
particular, a variety of alternatives to the
built-in Iterative Solver for ill-behaved
problems.
!help
!!S
/unknown
!!?
c101
"(<
c102
")"
c103
"&J
c105
".K
c24
".'
c26
"6I
c28
"6I
c30
")"
c31
"'V
c33
"&$
c37
"&J
c39
"6I
c400
!],
c401
!],
c403
!],
c404
!],
c405
!],
c406
!_L
c407
!`=
c408
!`L
c409
"!@
c410
""=
c411
!],
c413
"&$
c414
"&J
c415
"'V
c416
"(<
c417
")"
c419
"//
c420
".'
c422
"6X
c423
"6I
c424
".K
c426
"//
c427
"16
c429
"4-
c43
"16
c430
"4O
c431
"51
c433
"5S
c436
"6I
c437
"6I
c438
"6I
c439
"6I
c440
"6X
c441
"6X
c442
"6X
c443
"6X
c47
"2@
c48
"5S
c50
"5S
c51
!\G
c52
"16
c54
"2@
c55
"4O
c56
"51
c63
!#.
c91
"6X
c92
"6X
e1
!;#
e10
!>?
e104
!L%
e106
!L4
e11
!?'
e12
!?O
e13
!@+
e14
!(_
e15
!@S
e16
!A3
e17
!A[
e18
!B;
e19
!C5
e2
!;2
e21
!CU
e22
!D1
e3
!<$
e34
!D@
e36
!E&
e38
!EI
e4
!*H
e41
!F/
e42
!FQ
e49
!G3
e5
!+)
e53
!GS
e57
!H5
e58
!HD
e59
!*9
e6
!+)
e60
!*H
e601
!LW
e602
!M7
e603
!MW
e604
!N7
e605
!NW
e606
!O&
e607
!OF
e608
!OZ
e609
!P)
e61
!HS
e610
!P8
e611
!PG
e612
!PV
e613
!Q%
e614
!QE
e615
!QT
e62
!I"
e64
"*B
e65
!*H
e66
!*H
e67
!IE
e68
!IT
e7
!<V
e701
!R(
e702
!R(
e703
!R<
e704
!RP
e707
!R_
e711
!S3
e712
!SG
e713
!S[
e714
!T/
e715
!TC
e716
!TW
e717
!U+
e718
!U?
e719
!US
e720
!V"
e724
!V6
e725
!VE
e726
!VY
e727
!W(
e728
!W<
e729
!WP
e73
!J4
e730
!X$
e731
!X8
e733
!R(
e734
!XL
e735
!X[
e736
!Y?
e737
!Z%
e738
!Z4
e739
!ZC
e740
![)
e75
!JT
e76
"0A
e77
"0A
e8
!=6
e81
"0A
e82
"0A
e83
!K4
e84
"?&
e88
!KC
e89
"7'
e9
!=^
e90
!*9
prr
"?F
prs
"?&
pua
"@'
puf
"@'
pum
"@'
put
"@'
pvc
">1
pvi
"7K
pvn
"8N
pvo
"9D
pvs
"7'
pvu
":(
pvvc
">1
pvvd
";L
pvvf
">@
pvvi
"7K
pvvo
"9D
pvvs
"7'
pvvu
"=)
